﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Web.Services;
using ED_Nivelacion.Negocios;
using ED_Nivelacion.Negocios.Catalogos;

namespace ED_Nivelacion.PresentacionWeb.ServiciosLocales
{
    /// <summary>
    /// Descripción breve de reportes
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
    [System.Web.Script.Services.ScriptService]
    public class reportes : System.Web.Services.WebService
    {

        [WebMethod]
        public string docente(string idDocente, string periodo)
        {
            var valorCoordinador = 0;
            var valorAutoevaluacion = 0;
            var valorCoTutor = 0;
            var valorHeteroEvaluacion = 0;
            StringBuilder _codeHtml = new StringBuilder();
            int _idDocente = int.Parse(idDocente);
            int _idperiodo = int.Parse(periodo);
            try
            {
                var resultDocente = new DistribucionAcademica_C().FiltrarDistribucionAcademicaXidDocenteANdidPEriodo(_idDocente, _idperiodo).First();
                _codeHtml.Clear();
                if (resultDocente != null)
                {
                    var valoresActores = new ValoracionActor_C().ObtenerValoracionActorXPeriodo(_idperiodo);
                    if (valoresActores.Count == 4)
                    {
                        //Estudiante 1
                        //Coordinador 2
                        //Tutor 3 
                        //Docente 4

                        valorCoordinador = valoresActores.Where(E => E.idActor == 2).First().Valor;
                        valorAutoevaluacion = valoresActores.Where(E => E.idActor == 4).First().Valor;
                        valorCoTutor = valoresActores.Where(E => E.idActor == 3).First().Valor;
                        valorHeteroEvaluacion = valoresActores.Where(E => E.idActor == 1).First().Valor;
                    }
                    var resultEvaluacionDocente = new reporte_C().reporteCalificacionDocente(_idDocente, _idperiodo);
                    if (resultEvaluacionDocente.Count != 0)
                    {
                        _codeHtml.Append("<div class='row'><div class='col-md-12 center-block'>" +
                                        "<center><img class='center-block' height='150' width='150' src='img/logo.png' />" +
                                    "<h4><strong>ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ MANUEL FÉLIX LÓPEZ</strong></h4>" +
                                    "<h5><strong>COMISIÓN GENERAL EVALUACIÓN</strong></h5></center></div>" +
                                    "<div class='col-md-4 col-md-offset-8'>" +
                                        "<h5 class='text-right'><strong>ACTA Nº CE-2015-SNNA-01-01</strong></h5>" +
                                    "</div></div><hr>" +
                                "<div class='row'><div class='col-md-1'><p>Que,</p></div>" +
                                    "<div class='col-md-11'><p class='text-justify'>" +
                                           "Con fecha del 17 de julio de 2015 la Comisión General de Evaluación aplicó los instrumentos de heteroevaluación a los estudiantes de todas las Carreras para que expresen la valoración de los ítems respectos a sus profesores del periodo en curso, la Coevaluación a los Tutores, Coevaluación a la Coordinadora del SNNA y la Autoevalución se realizaron del 21 de julio al 27 de julio de 2015." +
                                        "</p></div><div class='col-md-1'><p>Que,</p></div>" +
                                    "<div class='col-md-11'><p class='text-justify'>Con fecha 10 de julio de 2015 , la Comisión General de Evaluación de la Escuela Superior Politécnica Agropecuaria de Manabí, solicitó el permiso a Vicerrectorado Académico para iniciar el proceso de Evaluación Docente correspondiente al periodo académico 23 Marzo 2015 a  21 de Agosto 2015 en el Sistema Nacional de Nivelación y Admisión (SNNA).</p>" +
                                    "</div><div class='col-md-1'><p>Que,</p></div>" +
                                    "<div class='col-md-11'><p class='text-justify'>Una vez presentado y analizados los resultados por parte de los técnicos de la Comisión General Evaluación:</p></div></div><div class='row'><p class='text-center'><em><strong>DETERMINA:</strong></em></p></div>" +
                                    "<div class='row'><div class='col-lg-12'><p class='text-justify'>" +
                                            "<em>Que el/la docente" + resultDocente.Nombre + " " + resultDocente.Apellido + ", ha alcanzado en el periodo académico: 23 Marzo 2015 a  21 de Agosto 2015, la siguiente calificación:</em>" +
                                        "</p></div></div>");
                        _codeHtml.Append("<div class='row'><div class='col-lg-12'><div class='table-responsive'>" +
                            "<table class='table table-bordered table-striped table-hover text-center small'>" +
                             "<thead><tr><th>CARRERA</th><th>CURSO</th><th>PARALELO</th><th>AUTOEVALUACIÓN " + valorAutoevaluacion + "%</th><th>COOEVALUACIÓN COORD. AÑO " + valorCoordinador + "% </th><th>COOEVALUACIÓN DIRECTIVOS " + valorCoTutor + "% </th><th>HETEROEVALUACIÓN ESTUDIANTES " + valorHeteroEvaluacion + "%</th><th>RESULTADOS POR CURSO</th><th>FORMULARIO</th></tr></thead><tbody>");
                        foreach (var item in resultEvaluacionDocente)
                        {
                            var promedioCriterioAutoevalucion = item.autoevaluacion * ((double)valorAutoevaluacion / 100);
                            var promedioCriterioTutor = item.coCoordinador * ((double)valorCoTutor / 100);
                            var promedioCriterioCoordinador = item.coDirector * ((double)valorCoordinador / 100);
                            var promedioCriterioHetero = item.coHeteroevaluacion * ((double)valorHeteroEvaluacion / 100);

                            _codeHtml.Append("<tr><td>" + item.carrera + "</td><td>" + item.materia + "</td><td>" + item.paralelo + "</td><td>" + Math.Round( promedioCriterioAutoevalucion,2) + "</td><td>" +Math.Round( promedioCriterioTutor, 2)  + "</td><td>" + Math.Round( promedioCriterioCoordinador,2)+ "</td><td>" + Math.Round( promedioCriterioHetero,2)  + "</td><td>" + Math.Round((promedioCriterioAutoevalucion+ promedioCriterioCoordinador+ promedioCriterioHetero+ promedioCriterioTutor),2) + "</td><td>" + item.codFormulario + "</td></tr>");
                        }

                        var promedioAutoevaluacion = resultEvaluacionDocente.Sum(E => E.autoevaluacion);
                        if (promedioAutoevaluacion != 0)
                        {
                            promedioAutoevaluacion = ((double)(promedioAutoevaluacion / (double)resultEvaluacionDocente.Count)) * ((double)valorAutoevaluacion / 100);
                        }
                        else
                        {
                            promedioAutoevaluacion = 0;
                        }

                        var promedioCoCoordinador = resultEvaluacionDocente.Sum(E => E.coDirector);
                        if (promedioCoCoordinador != 0)
                        {
                            promedioCoCoordinador = ((double)(promedioCoCoordinador / (double)resultEvaluacionDocente.Count)) * ((double)valorCoordinador / 100);
                        }
                        else
                        {
                            promedioCoCoordinador = 0;
                        }

                        var promedioTutor = resultEvaluacionDocente.Sum(E => E.coCoordinador);
                        if (promedioTutor != 0)
                        {
                            promedioTutor = ((double)(promedioTutor / (double)resultEvaluacionDocente.Count)) * ((double)valorCoTutor / 100);
                        }
                        else
                        {
                            promedioTutor = 0;
                        }

                        var promedioheteEvaluacion = resultEvaluacionDocente.Sum(E => E.coHeteroevaluacion);
                        if (promedioheteEvaluacion != 0)
                        {
                            promedioheteEvaluacion = ((double)(promedioheteEvaluacion / (double)resultEvaluacionDocente.Count)) * ((double)valorHeteroEvaluacion / 100);
                        }
                        else
                        {
                            promedioheteEvaluacion = 0;
                        }

                        
                       
                          var  promedioResultado = promedioAutoevaluacion + promedioCoCoordinador+ promedioheteEvaluacion + promedioTutor;

                          _codeHtml.Append("<tr style='font-weight: bold;'><td colspan='3'>CALIFICACIÓN FINAL</></td><td>" + Math.Round(promedioAutoevaluacion, 2, MidpointRounding.AwayFromZero) + "</td><td>" + Math.Round(promedioTutor, 2, MidpointRounding.AwayFromZero) + "</td><td>" + Math.Round(promedioCoCoordinador, 2, MidpointRounding.AwayFromZero) + "</td><td>" + Math.Round(promedioheteEvaluacion, 2, MidpointRounding.AwayFromZero) + "</td><td colspan='2'>" + Math.Round(promedioResultado, 2, MidpointRounding.AwayFromZero) + "</td></tr>");

                        _codeHtml.Append("</tbody></table></div></div>");

                        _codeHtml.Append("</div><hr><div class='row'><div class='col-lg-12'><p class='text-justify'><em>Dado en el Campus Politécnico en la ciudad de Calceta, a los " + DateTime.Now.Day.ToString() + " días del mes  " + DateTime.Now.Month + " de " + DateTime.Now.Year + ", en la Oficina de la Comisión General de Evaluación</em></p></div>");
                        _codeHtml.Append("</div><div class='row'><div class='col-lg-12'><hr size='3' color='blue' width='300'><p class='text-center'><strong>Ms. Ángel Alberto Vélez Mero</strong>  <br /><strong>COORDINADOR GENERAL DE EVALUACIÓN</strong></p> </div></div>");
                    }
                    else
                    {
                        _codeHtml.Append("<h4><strong>Datos de evauluacion no estan listos</strong></h4>");
                    }
                }
                else
                {
                    _codeHtml.Append("<h4><strong>Datos de evauluacion no estan listos</strong></h4>");
                }
                return _codeHtml.ToString();
            }
            catch (Exception)
            {

                return "<h2>No tiene datos el usuario</h2>";
            }

        }


        [WebMethod]
        public string docentes(string periodo)
        {
            StringBuilder _codeHtml = new StringBuilder();
            var valorCoordinador = 0;
            var valorAutoevaluacion = 0;
            var valorCoTutor = 0;
            var valorHeteroEvaluacion = 0;

            try
            {
                int idPeriodo = int.Parse(periodo);
                var resultDocentes = new DistribucionAcademica_C().FiltrarDistribucionAcademicaXPeriodo(idPeriodo);
                _codeHtml.Clear();

                if (resultDocentes.Count != 0)
                {
                    var listadoDocente = resultDocentes.GroupBy(E => E.idDocente).Select(R => R.First()).ToList();
                    var valoresActores = new ValoracionActor_C().ObtenerValoracionActorXPeriodo(idPeriodo);
                    if (valoresActores.Count == 4)
                    {
                        //Estudiante 1
                        //Coordinador 2
                        //Tutor 3 
                        //Docente 4

                        valorCoordinador = valoresActores.Where(E => E.idActor == 2).First().Valor;
                        valorAutoevaluacion = valoresActores.Where(E => E.idActor == 4).First().Valor;
                        valorCoTutor = valoresActores.Where(E => E.idActor == 3).First().Valor;
                        valorHeteroEvaluacion = valoresActores.Where(E => E.idActor == 1).First().Valor;
                    }
                    _codeHtml.Append("<div class='row'>" +
                                "<div class='col-md-12 center-block'>" +
                                            "<center><img class='center-block' height='150' width='150' src='img/logo.png' />" +
                                        "<h4><strong>ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ MANUEL FÉLIX LÓPEZ</strong></h4>" +
                                        "<h5><strong>COMISIÓN GENERAL EVALUACIÓN</strong></h5></center></div>" +
                                        "<div class='col-md-4 col-md-offset-8'>" +
                                        "</div></div><hr>");
                    _codeHtml.Append("<div class='row'><div class='col-lg-12'><div class='table-responsive'>" +
                        "<table class='table table-bordered table-striped table-hover text-center small'>" +
                        "<thead><tr><th>CARRERA</th><th>CURSO</th><th>PARALELO</th><th>AUTOEVALUACIÓN " + valorAutoevaluacion + "%</th><th>COOEVALUACIÓN COORD. AÑO " + valorCoTutor + "% </th><th>COOEVALUACIÓN DIRECTIVOS " + valorCoordinador + "% </th><th>HETEROEVALUACIÓN ESTUDIANTES " + valorHeteroEvaluacion + "%</th><th>RESULTADOS POR CURSO</th><th>FORMULARIO</th></tr></thead><tbody>");
                    foreach (var item in listadoDocente)
                    {

                        var resultEvaluacionDocente = new reporte_C().reporteCalificacionDocente(item.idDocente, idPeriodo);
                        if (resultEvaluacionDocente.Count != 0)
                        {

                            foreach (var itemMateria in resultEvaluacionDocente)
                            {
                                var promedioCriterioAutoevalucion = itemMateria.autoevaluacion * ((double)valorAutoevaluacion / 100);
                                var promedioCriterioTutor = itemMateria.coCoordinador * ((double)valorCoTutor / 100);
                                var promedioCriterioCoordinador = itemMateria.coDirector * ((double)valorCoordinador / 100);
                                var promedioCriterioHetero = itemMateria.coHeteroevaluacion * ((double)valorHeteroEvaluacion / 100);

                                _codeHtml.Append("<tr><td>" + itemMateria.carrera + "</td><td>" + itemMateria.materia + "</td><td>" + itemMateria.paralelo + "</td><td>" + Math.Round(promedioCriterioAutoevalucion, 2) + "</td><td>" + Math.Round(promedioCriterioTutor, 2) + "</td><td>" + Math.Round(promedioCriterioCoordinador, 2) + "</td><td>" + Math.Round( promedioCriterioHetero , 2)+ "</td><td>" + Math.Round((promedioCriterioAutoevalucion + promedioCriterioCoordinador + promedioCriterioHetero + promedioCriterioTutor),2) + "</td><td>" + item.Nombre + " " + item.Apellido + "</td></tr>");
                            }

                        }
                        else
                        {
                            _codeHtml.Append("<h4><strong>Datos de evauluacion no estan listos</strong></h4>");
                        }
                    }
                    _codeHtml.Append("</tbody></table></div></div>");

                    _codeHtml.Append("</div><hr><div class='row'><div class='col-lg-12'><p class='text-justify'><em>Dado en el Campus Politécnico en la ciudad de Calceta, a los " + DateTime.Now.Day.ToString() + " días del mes  " + DateTime.Now.Month + " de " + DateTime.Now.Year + ", en la Oficina de la Comisión General de Evaluación</em></p></div>");
                    _codeHtml.Append("</div><div class='row'><div class='col-lg-12'><hr size='3' color='blue' width='300'><p class='text-center'><strong>Ms. Ángel Alberto Vélez Mero</strong>  <br /><strong>COORDINADOR GENERAL DE EVALUACIÓN</strong></p> </div></div>");
                }
                else
                {
                    _codeHtml.Append("<h4><strong>Datos de evauluacion no estan listos</strong></h4>");
                }
                return _codeHtml.ToString();
            }
            catch (Exception)
            {

                return "<h2>No tiene datos el usuario</h2>";
            }

        }


        [WebMethod]
        public string reporteXmaterias(string _idMateria, string periodo)
        {
            var valorCoordinador = 0;
            var valorAutoevaluacion = 0;
            var valorCoTutor = 0;
            
            var valorHeteroEvaluacion = 0;
            StringBuilder _codeCabecera = new StringBuilder();
            StringBuilder _codePreguntas = new StringBuilder();
            StringBuilder _codeCriterios = new StringBuilder();
            StringBuilder _codeHtml = new StringBuilder();

            reporte_C _objDatosReporte = new reporte_C();
            try
            {
                int idMateria = int.Parse(_idMateria);
                int idPeriodo = int.Parse(periodo);
                var resultMateria = new DistribucionAcademica_C().FiltrarDistribucionAcademicaId(idMateria).FirstOrDefault();
                var resultNroMatriculados = new Matricula_C().nroMatriculadosXMaterias(idMateria, idPeriodo);
                var nroPreguntas = new Preguntas_C().NroDePreguntas(idMateria, idPeriodo);
                var nroEstudiantesEvaluados = new reporte_C().nrodeEstudiantesPruebaXidDistribucion(idMateria, idPeriodo);
                var valoresActores = new ValoracionActor_C().ObtenerValoracionActorXPeriodo(idPeriodo);
                if (valoresActores.Count == 4)
                {
                    //Estudiante 1
                    //Coordinador 2
                    //Tutor 3 
                    //Docente 4

                    valorCoordinador = valoresActores.Where(E => E.idActor == 2).First().Valor;
                    valorAutoevaluacion = valoresActores.Where(E => E.idActor == 4).First().Valor;
                    valorCoTutor = valoresActores.Where(E => E.idActor == 3).First().Valor;
                    valorHeteroEvaluacion = valoresActores.Where(E => E.idActor == 1).First().Valor;
                }
                if (resultMateria != null)
                {
                                         

                    var resultCriterios = new CriterioEvaluacion_C().ObtenerCriterio();
                    List<decimal> _puntajes = new List<decimal>();
                    var resultPreguntas = new Preguntas_C().ObtenerPreguntas();
                    foreach (var itemCriterios in resultCriterios)
                    {


                         _codePreguntas.Append("<tr class='success'>" +
                                                   "<td class='text-left'>" + itemCriterios.Criterio + "</td>" +
                                                   "<td colspan='2' class='text-right'>" + (Math.Round(_objDatosReporte.promedioAutoevaluacionXIdCriterio(itemCriterios.idCriterio_Evaluacion, idMateria, idPeriodo), 2, MidpointRounding.AwayFromZero) * 25) + "</td>" +
                                                   "<td colspan='2'>" + (Math.Round(_objDatosReporte.promedioCoTutorXIdCriterio(itemCriterios.idCriterio_Evaluacion, idMateria, idPeriodo), 2, MidpointRounding.AwayFromZero) * 25) + "</td>" +
                                                   "<td colspan='2'>" + (Math.Round(_objDatosReporte.promedioCoCoordinadorXIdCriterio(itemCriterios.idCriterio_Evaluacion, resultMateria.idDocente, idPeriodo), 2, MidpointRounding.AwayFromZero) * 25) + "</td>" +
                                                   "<td colspan='4'>" + (Math.Round(_objDatosReporte.promedioHeteroevaluacionXIdCriterio(itemCriterios.idCriterio_Evaluacion, idMateria, idPeriodo), 2, MidpointRounding.AwayFromZero) * 25) + "</td>" +
                                               "</tr>");

                        var resultFiltroPreguntas = resultPreguntas.Where(E => E.idCriterio_Evaluacion == itemCriterios.idCriterio_Evaluacion).ToList();

                        foreach (var itemPreguntas in resultFiltroPreguntas)
                        {
                            _codePreguntas.Append("<tr><td class='text-left'>" + itemPreguntas.Iten_Pregunta + "</td>");
                            var resultPreguntaAutoevaluacion = _objDatosReporte.resultadoAutoevaluacionPreguntaXIdPreguntaANDIdDistribucion(itemPreguntas.idPreguntas, idMateria, idPeriodo);
                            if (resultPreguntaAutoevaluacion != 0)
                            {
                                _codePreguntas.Append("<td>" + resultPreguntaAutoevaluacion + "</td><td>" + resultPreguntaAutoevaluacion * 25 + "%</td>");
                            }
                            else
                            {
                                _codePreguntas.Append("<td>N/A</td><td>N/A</td>");
                            }

                            var resultPreguntaTutor = _objDatosReporte.resultadoCotutorPreguntaXIdPreguntaANDIdDistribucion(itemPreguntas.idPreguntas, idMateria, idPeriodo);
                            if (resultPreguntaTutor != 0)
                            {
                                _codePreguntas.Append("<td>" + resultPreguntaTutor + "</td><td>" + resultPreguntaTutor * 25 + "%</td>");
                            }
                            else
                            {
                                _codePreguntas.Append("<td>N/A</td><td>N/A</td>");
                            }
                            var resultPreguntaCoordinador = _objDatosReporte.resultadoCoCoordinadorPreguntaXIdPreguntaANDIdDistribucion(itemPreguntas.idPreguntas, resultMateria.idDocente, idPeriodo);
                            if (resultPreguntaCoordinador != 0)
                            {
                                _codePreguntas.Append("<td>" + resultPreguntaCoordinador + "</td><td>" + resultPreguntaCoordinador * 25 + "%</td>");
                            }
                            else
                            {
                                _codePreguntas.Append("<td>N/A</td><td>N/A</td>");
                            }

                            var resultPreguntaHeteroevaluacion = _objDatosReporte.resultadoHeteroevaluacionPreguntaXIdPreguntaANDIdDistribucion(itemPreguntas.idPreguntas, idMateria, idPeriodo);
                            if (resultPreguntaHeteroevaluacion != 0)
                            {
                                var desviacion = _objDatosReporte.DesviacionEstandarHeteroevaluacionPreguntaXIdPreguntaANDIdDistribucion(itemPreguntas.idPreguntas, idMateria, idPeriodo);

                                _codePreguntas.Append("<td>" + resultPreguntaHeteroevaluacion + "</td><td>" + Math.Round(desviacion, 2, MidpointRounding.AwayFromZero) + "</td><td>" + Math.Round((desviacion / (double)resultPreguntaHeteroevaluacion) * 100, 2, MidpointRounding.AwayFromZero) + "%</td><td>" + resultPreguntaHeteroevaluacion * 25 + "%</td>");
                            }
                            else
                            {
                                _codePreguntas.Append("<td>N/A</td><td>N/A</td><td>N/A</td><td>N/A</td> ");


                            }
                            _codePreguntas.Append("</tr>");
                        }

                    }


                    _codeCriterios.Append(
                                           "</tbody>" +
                                       "</table>" +
                                   "</div>" +
                               "</div>" +
                           "</div>" +
                           "<div class='row'>" +
                               "<div class='col-md-12 text-center'>" +
                                   "<h4>CÓMPUTO GENERAL DE LA CALIFICACIÓN</h4>" +
                                   "<div class='table-responsive'>" +
                                       "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                           "<thead>" +
                                               "<tr>" +
                                                   "<th rowspan='2'></th>" +
                                                   "<th rowspan='2' colspan='2'>AUTOEVALUACIÓN "+ valorAutoevaluacion+"%</th>" +
                                                   "<th colspan='4'>COEVALUACIÓN</th>" +
                                                   "<th rowspan='2' colspan='2'>HETEROEVALUACIÓN "+valorHeteroEvaluacion+"</th>" +
                                               "</tr>" +
                                               "<tr>" +
                                                   "<th colspan='2'>EV. POR PARES "+valorCoTutor+"%</th>" +
                                                   "<th colspan='2'>DIRECTIVOS "+valorCoordinador+"%</th>" +
                                               "</tr>" +
                                               "<tr>" +
                                                   "<th>CRITERIOS DE EVALUACIÓN</th>" +
                                                   "<th>PESO DEL CRITERIO</th>" +
                                                   "<th>PUNTAJE</th>" +
                                                   "<th>PESO DEL CRITERIO</th>" +
                                                   "<th>PUNTAJE</th>" +
                                                   "<th>PESO DEL CRITERIO</th>" +
                                                   "<th>PUNTAJE</th>" +
                                                   "<th>PESO DEL CRITERIO</th>" +
                                                   "<th>PUNTAJE</th>" +
                                               "</tr>" +
                                           "</thead>" +
                                           "<tbody>");
                    

                    decimal SUMCoordinador = 0;
                    decimal SUMAutoevaluacion = 0;

                    decimal SUMCoTutor = 0;
                    decimal SUMHeteroEvaluacion = 0;
                    decimal promedioFinal = 0;
                    //Estudiante 1
                    //Coordinador 2
                    //Tutor 3 
                    //Docente 4

                    foreach (var itemCriterios in resultCriterios)
                    {
                        var PesoCriterioCoordinador = 0;
                        var PesoCriterioAutoevaluacion = 0;
                        var PesoCriterioCoTutor = 0;
                        var PesoCriterioHeteroEvaluacion = 0;
                        decimal valorCriterioAuto = 0;
                        decimal valorCriterioTutor = 0;

                        decimal valorCriterioCoordinador = 0;
                        decimal valorCriterioHeteroevaluacion = 0;

                        if (new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(2, itemCriterios.idCriterio_Evaluacion, idPeriodo).Count != 0)
                        {
                            PesoCriterioCoordinador = new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(2, itemCriterios.idCriterio_Evaluacion, idPeriodo).First().Ponderacion;
                        }
                        

                        if (new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(4, itemCriterios.idCriterio_Evaluacion, idPeriodo).Count != 0)
                        {
                            PesoCriterioAutoevaluacion = new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(4, itemCriterios.idCriterio_Evaluacion, idPeriodo).First().Ponderacion;
                        }

                        if (new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(3, itemCriterios.idCriterio_Evaluacion, idPeriodo).Count != 0)
                        {
                            PesoCriterioCoTutor = new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(3, itemCriterios.idCriterio_Evaluacion, idPeriodo).First().Ponderacion;
                        }
                        if ( new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(1, itemCriterios.idCriterio_Evaluacion, idPeriodo).Count != 0)
                        {
                            PesoCriterioHeteroEvaluacion = new DistribucionCriterio_C().FiltrarDCriteriosXActorIdCriterioANDIdPeriod(1, itemCriterios.idCriterio_Evaluacion, idPeriodo).First().Ponderacion;
                        }

                        valorCriterioAuto = (decimal)(_objDatosReporte.promedioAutoevaluacionXIdCriterio(itemCriterios.idCriterio_Evaluacion, idMateria, idPeriodo) * 25) * (decimal)((decimal)PesoCriterioAutoevaluacion / 100);
                        valorCriterioTutor = (decimal)(_objDatosReporte.promedioCoTutorXIdCriterio(itemCriterios.idCriterio_Evaluacion, idMateria, idPeriodo) * 25) * (decimal)((decimal)PesoCriterioCoTutor / 100);
                        valorCriterioCoordinador =  (decimal)(_objDatosReporte.promedioCoCoordinadorXIdCriterio(itemCriterios.idCriterio_Evaluacion, resultMateria.idDocente, idPeriodo) * 25) * (decimal)((decimal)PesoCriterioCoordinador / 100);
                        valorCriterioHeteroevaluacion = (decimal)(_objDatosReporte.promedioHeteroevaluacionXIdCriterio(itemCriterios.idCriterio_Evaluacion, idMateria, idPeriodo) * 25) * ((decimal)PesoCriterioHeteroEvaluacion / 100);
                        
                        SUMAutoevaluacion += valorCriterioAuto;
                        SUMCoTutor += valorCriterioTutor;
                        SUMCoordinador += valorCriterioCoordinador;
                        SUMHeteroEvaluacion += valorCriterioHeteroevaluacion;
                        _codeCriterios.Append(
                                                  "<tr>" +
                                                      "<td>" + itemCriterios.Criterio + "</td>" +
                                                      "<td>"+PesoCriterioAutoevaluacion+"%</td>" +
                                                      "<td>" + Math.Round( valorCriterioAuto , 2, MidpointRounding.AwayFromZero) + "</td>" +
                                                      "<td>"+PesoCriterioCoTutor+"%</td>" +
                                                      "<td>" + Math.Round(valorCriterioTutor, 2, MidpointRounding.AwayFromZero) + "</td>" +
                                                      "<td>"+PesoCriterioCoordinador+"%</td>" +
                                                      "<td>" +Math.Round(valorCriterioCoordinador, 2, MidpointRounding.AwayFromZero) + "</td>" +
                                                      "<td>"+PesoCriterioHeteroEvaluacion+"%</td>" +
                                                      "<td>" + Math.Round(valorCriterioHeteroevaluacion, 2, MidpointRounding.AwayFromZero) + "</td>" +
                                                  "</tr>");
                    }
                    var promedioCriterioAutoevalucion = Math.Round(SUMAutoevaluacion * ((decimal)valorAutoevaluacion / 100), 2, MidpointRounding.AwayFromZero);
                    var promedioCriterioTutor = Math.Round(SUMCoTutor * ((decimal)valorCoTutor / 100), 2, MidpointRounding.AwayFromZero);
                    var promedioCriterioCoordinador = Math.Round(SUMCoordinador * ((decimal)valorCoordinador / 100), 2, MidpointRounding.AwayFromZero);
                    var promedioCriterioHetero = Math.Round(SUMHeteroEvaluacion * ((decimal)valorHeteroEvaluacion / 100), 2, MidpointRounding.AwayFromZero);
                    _codeCriterios.Append("<tr><td></td><td colspan='2'>" + promedioCriterioAutoevalucion + "</td><td colspan='2'>" + promedioCriterioTutor  + "</td><td colspan='2'>" + promedioCriterioCoordinador + "</td><td colspan='2'>" + promedioCriterioHetero + "</td></tr>");
                    promedioFinal = promedioCriterioAutoevalucion + promedioCriterioTutor + promedioCriterioCoordinador + promedioCriterioHetero;

                    _codeCriterios.Append("</tbody>" +
                                        "</table>" +
                                        "<p class='text-left'>Calceta, "+DateTime.Now.ToShortDateString()+"</p>" +
                                        "<hr size='3' width='300'>" +
                                        "<p class='text-center'><strong>TÉCNICO</strong></p>" +
                                    "</div>" +
                                "</div>" +
                            "</div>" +
                            "<div class='clearfix'></div>");


                    _codeCabecera.Append("<div class='row'>" +
                                "<table>" +
                                    "<tr class='text-center'>" +
                                        "<td class='col-lg-10'>" +
                                            "<h5><strong>ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ MANUEL FÉLIX LÓPEZ</strong></h5>" +
                                            "<h6><strong>COMISIÓN GENERAL EVALUACIÓN</strong></h6>" +
                                            "<h6><strong>EVALUACIÓN INTEGRAL DEL DESEMPEÑO DOCENTE DEL SISTEMA NACIONAL DE NIVELACIÓN Y ADMISIÓN</strong></h6>" +
                                            "<h5><strong>REPORTE DE CURSO (ASIGNATURA)</strong></h5>" +
                                        "</td>" +
                                        "<td class='col-lg-2'>" +
                                            "<img width='100' src='img/logo.png' />" +
                                        "</td>" +
                                   "</tr>" +
                               "</table>" +
                           "</div>" +
                           "<div class='row'>" +
                               "<table>" +
                                   "<tr>" +
                                       "<td class='col-md-4'>" +
                                           "<h6>FORMULARIO Nº CE-2015-SNNA-01-01-A</h6>" +
                                       "</td>" +
                                       "<td class='col-md-2'>" +
                                           "<h6><strong>PERIODO ACADÉMICO:</strong></h6>" +
                                       "</td>" +
                                       "<td class='col-md-2' colspan='2'>" +
                                           "<h6>" + resultMateria.Nombre_Periodo + "</h6>" +
                                       "</td>" +
                                       "<td class='col-md-2'>" +
                                           "<h6><strong>CARRERA:</strong></h6>" +
                                       "</td>" +
                                       "<td class='col-md-2'>" +
                                           "<h6>" + resultMateria.Carrera + " A</h6>" +
                                       "</td>" +
                                   "</tr>" +
                                   "<tr>" +
                                       "<td class='col-md-4'>" +
                                           "<h6><strong>NOMBRE DEL DOCENTE:</strong>" +
                                               "<br>" + resultMateria.Nombre + " " + resultMateria.Apellido + "</h6>" +
                                       "</td>" +
                                       "<td class='col-md-3' colspan='2'>" +
                                           "<h6><strong>NÚMERO DE ESTUDIANTES MATRICULADOS:</strong></h6>" +
                                       "</td>" +
                                       "<td class='col-md-1'>" +
                                           "<h6>" + resultNroMatriculados + "</h6>" +
                                       "</td>" +
                                       "<td class='col-md-2 text-right'>" +
                                           "<h6><strong>ASIGNATURA:</strong></h6>" +
                                       "</td>" +
                                       "<td class='col-md-2'>" +
                                           "<h6>" + resultMateria.Nombre_Asignatura + "</h6>" +
                                       "</td>" +
                                   "</tr>" +
                                   "<tr>" +
                                       "<td class='col-md-3'>" +
                                           "<h6><strong>NÚMERO DE PREGUNTAS:</strong></h6>" +
                                           "<h6>" + resultPreguntas.Count + "</h6>" +
                                       "</td>" +

                                       "<td class='col-md-3' colspan='2'>" +
                                           "<h6><strong>NÚMERO DE ESTUDIANTES EVALUADOS:</strong></h6>" +
                                       "</td>" +
                                       "<td class='col-md-1'>" +
                                           "<h6>" + nroEstudiantesEvaluados + "</h6>" +
                                       "</td>" +
                                   "</tr>" +
                               "</table>" +

                           "</div>" +
                           "<div class='row'>" +
                               "<div class='col-md-12'>" +
                                   "<div class='table-responsive'>" +
                                       "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                           "<thead>" +
                                               "<tr>" +
                                                   "<th class='warning text-center'>CALIFICACIÓN</th>" +
                                                   "<th colspan='2'>AUTOEVALUACIÓN " + valorAutoevaluacion + "</th>" +
                                                   "<th colspan='4'>COEVALUACIÓN</th>" +
                                                   "<th colspan='4'>HETEROEVALUACIÓN " + valorHeteroEvaluacion + "</th>" +
                                               "</tr>" +
                                               "<tr>" +
                                                   "<th class='warning text-center'> <h1>" + promedioFinal + "</h1></th>" +
                                                   "<th>VALOR</th>" +
                                                   "<th>PUNTAJE</th>" +
                                                   "<th>EV. POR PARES " + valorCoordinador + "</th>" +
                                                   "<th>PUNTAJE</th>" +
                                                   "<th>DIRECTIVO " + valorCoTutor + "</th>" +
                                                   "<th>PUNTAJE</th>" +
                                                   "<th>MEDIA</th>" +
                                                   "<th>DESVIACION ESTÁNDAR</th>" +
                                                   "<th>GRADO DE CONFIANZA</th>" +
                                                   "<th>PUNTAJE</th>" +
                                               "</tr>" +
                                           "</thead>" +
                                           "<tbody>");
                }
                else
                {
                    _codeHtml.Clear();
                    _codeHtml.Append("<h2>No tiene datos el usuario</h2>");
                }
                return _codeCabecera.ToString() + _codePreguntas.ToString() + _codeCriterios.ToString();
            }
            catch (Exception)
            {

                return "<h2>No tiene datos el usuario</h2>";
            }
        }

        [WebMethod]
        public string evaluacionXCarrera(string _idCarrera, string paralelo, string periodo)
        {
            var valorCoordinador = 0;
            var valorAutoevaluacion = 0;
            var valorCoTutor = 0;
            var valorHeteroEvaluacion = 0;
            StringBuilder _codeHtml = new StringBuilder();
            reporte_C _objDatosReporte = new reporte_C();
            
            try
            {
                int idCarrera = int.Parse(_idCarrera);
                int idPerido = int.Parse(periodo);
                var valoresActores = new ValoracionActor_C().ObtenerValoracionActorXPeriodo(idPerido);

                if (valoresActores.Count == 4)
                {
                    //Estudiante 1
                    //Coordinador 2
                    //Tutor 3 
                    //Docente 4

                    valorCoordinador = valoresActores.Where(E => E.idActor == 2).First().Valor;
                    valorAutoevaluacion = valoresActores.Where(E => E.idActor == 4).First().Valor;
                    valorCoTutor = valoresActores.Where(E => E.idActor == 3).First().Valor;
                    valorHeteroEvaluacion = valoresActores.Where(E => E.idActor == 1).First().Valor;
                }
                var resultCarrera = new Carrera_C().FiltrarCarrera(idCarrera).First();
                var resultReporteEvaluacion = _objDatosReporte.reporteEvaluacionXCarrera(idCarrera, paralelo, idPerido);
                var resulPeriodo = new Periodo_C().FiltrarPeriodo(idPerido).First();

                _codeHtml.Append("<div class='row'>" +
                           "<div class='table-responsive'>" +
                               "<table class='table'>" +
                                   "<tr class='text-center'>" +
                                       "<td class='col-lg-10'>" +
                                           "<h5><strong>ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ MANUEL FÉLIX LÓPEZ</strong></h5>" +
                                           "<h6><strong>COMISIÓN GENERAL EVALUACIÓN</strong></h6>" +
                                           "<h6><strong>EVALUACIÓN DEL DESEMPEÑO DEL PERSONAL DOCENTE DEL SISTEMA NACIONAL DE NIVELACIÓN Y ADMISIÓN SNNA DEL PERIODO "+resulPeriodo.Nombre_Periodo+ "</strong></h6>" +
                                           "<h5><strong>CARRERA: " + resultCarrera.CarreraNombre + "</strong></h5>" +
                                       "</td>" +
                                       "<td class='col-lg-2'>" +
                                           "<img width='100' src='img/logo.png' />" +
                                       "</td>" +
                                   "</tr>" +
                               "</table>" +
                           "</div>" +
                       "</div>" +
                       "<div class='row'>" +
                           "<div class='col-lg-12'>" +
                               "<div class='table-responsive'>" +

                                   "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                       "<thead>" +
                                           "<tr>" +
                                               "<th>CURSO</th>" +
                                               "<th>AUTOEVALUACIÓN " + valorAutoevaluacion + "%</th>" +
                                               "<th>COEVALUACIÓN COORD. AÑO " + valorCoTutor + "%</th>" +
                                               "<th>COEVALUACIÓN DIRECTIVOS " + valorCoordinador + "%</th>" +
                                               "<th>HETEROEVALUACIÓN ESTUDIANTES " + valorHeteroEvaluacion + "%</th>" +
                                               "<th>RESULTADOS POR CURSO</th>" +
                                               "<th>PROMEDIO PERCEPCIÓN DE LOS DOCENTES (A)</th>" +
                                               "<th>PROMEDIO PERCEPCIÓN DE TERCEROS (B)</th>" +
                                               "<th>DIFERENCIA (A-B)</th>" +
                                           "</tr>" +
                                       "</thead>" +
                                       "<tbody>");
                
                    double SUMCoordinador = 0;
                    double SUMAutoevaluacion = 0;

                    double SUMCoTutor = 0;
                    double SUMHeteroEvaluacion = 0;
                double porXcursoSUm = 0;
                foreach (var item in resultReporteEvaluacion)
                {
                    var promedioCriterioAutoevalucion = item.autoevaluacion * ((double)valorAutoevaluacion / 100);
                    var promedioCriterioTutor = item.coCoordinador * ((double)valorCoTutor / 100);
                    var promedioCriterioCoordinador = item.coDirector * ((double)valorCoordinador / 100);
                    var promedioCriterioHetero = item.coHeteroevaluacion * ((double)valorHeteroEvaluacion / 100);
                    SUMAutoevaluacion += promedioCriterioAutoevalucion;
                    SUMCoTutor += promedioCriterioTutor;
                    SUMCoordinador += promedioCriterioCoordinador;
                    SUMHeteroEvaluacion += promedioCriterioHetero;
                    porXcursoSUm += SUMAutoevaluacion + SUMCoTutor + SUMCoordinador + SUMHeteroEvaluacion;

                    var resultPromedioTerceros = ((promedioCriterioTutor + promedioCriterioCoordinador + promedioCriterioHetero) / (100 - valorAutoevaluacion)) * 100;
                    _codeHtml.Append("<tr>" +
                                               "<td>" + item.materia + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioAutoevalucion, 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioTutor, 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioCoordinador, 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioHetero, 2) + "</td>" +
                                               "<td>" + Math.Round((promedioCriterioAutoevalucion + promedioCriterioCoordinador + promedioCriterioHetero + promedioCriterioTutor), 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioAutoevalucion * valorAutoevaluacion, 2) + "</td>" +
                                               "<td>" + Math.Round(resultPromedioTerceros, 2) + "</td>" +
                                               "<td>" + Math.Round(((promedioCriterioAutoevalucion * valorAutoevaluacion) - resultPromedioTerceros), 2) + "</td>" +
                                           "</tr>");

                }

                var promAutoEvaluacion = SUMAutoevaluacion / resultReporteEvaluacion.Count;
                var promCoTutor = SUMCoTutor / resultReporteEvaluacion.Count;
                var promCoDirector = SUMCoordinador / resultReporteEvaluacion.Count;
                var promHeteroEvaluacion = SUMHeteroEvaluacion / resultReporteEvaluacion.Count;
                var promPromedioXCurso = porXcursoSUm / resultReporteEvaluacion.Count;

                _codeHtml.Append("</tbody></table></div></div></div>" +
                "<div class='row'>" +
                     "<div class='col-lg-9'>" +
                        "<div class='table-responsive'>" +
                            "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                "<tbody>" +
                                    "<tr>" +
                                        "<td>CALIFICACIÓN ESPERADA (C)</td><td>" + valorAutoevaluacion + "</td><td>" + valorCoTutor + "</td><td>" + valorCoordinador + "</td><td>" + valorHeteroEvaluacion + "</td><td>100</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>PROMEDIO (D)</td>" +
                                        "<td>" + Math.Round ( promAutoEvaluacion ,2)+ "</td>" +
                                        "<td>" +Math.Round ( promCoTutor,2) + "</td>" +
                                        "<td>" + Math.Round (promCoDirector,2) + "</td>" +
                                        "<td>" + Math.Round (promHeteroEvaluacion,2) + "</td>" +
                                        "<td>" +Math.Round ( promPromedioXCurso,2) + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>DIFERENCIA (C-D)</td>" +
                                        "<td>" + Math.Round ((valorAutoevaluacion- promAutoEvaluacion) ,2)+ "</td>" +
                                        "<td>" + Math.Round (( valorCoTutor- promCoTutor ),2)+ "</td>" +
                                        "<td>" + Math.Round (( valorCoordinador- promCoDirector),2) + "</td>" +
                                        "<td>" + Math.Round (( valorHeteroEvaluacion- promHeteroEvaluacion ),2)+ "</td>" +
                                        "<td>" +Math.Round ( ( 100- promPromedioXCurso) ,2)+ "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>DIFERENCIA PORCENTUAL</td>" +
                                        "<td>" +Math.Round ( (valorAutoevaluacion - promAutoEvaluacion) / valorAutoevaluacion ,2)+ "</td>" +
                                        "<td>" + Math.Round ((valorCoTutor - promCoTutor) / valorCoTutor,2) + "</td>" +
                                        "<td>" +Math.Round ( (valorCoordinador - promCoDirector) / valorCoordinador,2)+ "</td>" +
                                        "<td>" + Math.Round ((valorHeteroEvaluacion - promHeteroEvaluacion) / valorHeteroEvaluacion,2) + "</td>" +
                                        "<td>" + Math.Round ((100 - promPromedioXCurso) / 100,2) + "</td>" +
                                    "</tr>" +
                                "</tbody>" +
                            "</table>" +
                        "</div>" +
                    "</div>" +
                     "<div class='col-lg-3'>" +
                        "<div class='table-responsive'>" +
                            "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                "<tbody>" +
                                    "<tr>" +
                                        "<td>PROMEDIO DE LA CARRERA</td>" +
                                        "<td>" + promPromedioXCurso + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>PROMEDIO ALTO:</td>" +
                                        "<td>" + resultReporteEvaluacion.Max(E=> E.porCurso) + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>PROMEDIO BAJO:</td>" +
                                        "<td>" + resultReporteEvaluacion.Min(E => E.porCurso) + "</td>" +
                                    "</tr>" +
                                "</tbody>" +
                            "</table>" +
                        "</div>" +

                    "</div>" +
                "</div>" +
                "<div class='row'>" +
                    "<div id='grafico' class='col-lg-12'>" +
                    "</div>" +
                "</div>");
                return _codeHtml.ToString();
            }
            catch (Exception)
            {

                return "<h2>No tiene datos el usuario</h2>";
            }
        }

        [WebMethod]
        public string evaluacionSNNA(string periodo)
        {
            var valorCoordinador = 0;
            var valorAutoevaluacion = 0;
            var valorCoTutor = 0;
            var valorHeteroEvaluacion = 0;
            StringBuilder _codeHtml = new StringBuilder();
            reporte_C _objDatosReporte = new reporte_C();

            try
            {
                int idPeriodo = int.Parse(periodo);
                var valoresActores = new ValoracionActor_C().ObtenerValoracionActorXPeriodo(idPeriodo);

                if (valoresActores.Count == 4)
                {
                    //Estudiante 1
                    //Coordinador 2
                    //Tutor 3 
                    //Docente 4

                    valorCoordinador = valoresActores.Where(E => E.idActor == 2).First().Valor;
                    valorAutoevaluacion = valoresActores.Where(E => E.idActor == 4).First().Valor;
                    valorCoTutor = valoresActores.Where(E => E.idActor == 3).First().Valor;
                    valorHeteroEvaluacion = valoresActores.Where(E => E.idActor == 1).First().Valor;
                }
                var resultPeriodo = new Periodo_C().FiltrarPeriodo(idPeriodo).First();
                _codeHtml.Append("<div class='row'>" +
                           "<div class='table-responsive'>" +
                               "<table class='table'>" +
                                   "<tr class='text-center'>" +
                                       "<td class='col-lg-10'>" +
                                           "<h5><strong>ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ MANUEL FÉLIX LÓPEZ</strong></h5>" +
                                           "<h6><strong>COMISIÓN GENERAL EVALUACIÓN</strong></h6>" +
                                           "<h6><strong>EVALUACIÓN DEL DESEMPEÑO DEL PERSONAL DOCENTE DEL SISTEMA NACIONAL DE NIVELACIÓN Y ADMISIÓN (SNNA) DEL PERIODO "+resultPeriodo.Nombre_Periodo+"</strong></h6>" +
                                       "</td>" +
                                       "<td class='col-lg-2'>" +
                                           "<img width='100' src='img/logo.png' />" +
                                       "</td>" +
                                   "</tr>" +
                               "</table>" +
                           "</div>" +
                       "</div>" +
                       "<div class='row'>" +
                           "<div class='col-lg-12'>" +
                               "<div class='table-responsive'>" +
                                   "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                       "<thead>" +
                                           "<tr>" +
                                               "<th>CURSO</th>" +
                                               "<th>AUTOEVALUACIÓN " + valorAutoevaluacion + "%</th>" +
                                               "<th>COEVALUACIÓN COORD. AÑO " + valorCoTutor + "%</th>" +
                                               "<th>COEVALUACIÓN DIRECTIVOS " + valorCoordinador + "%</th>" +
                                               "<th>HETEROEVALUACIÓN ESTUDIANTES " + valorHeteroEvaluacion + "%</th>" +
                                               "<th>RESULTADOS POR CURSO</th>" +
                                               "<th>PROMEDIO PERCEPCIÓN DE LOS DOCENTES (A)</th>" +
                                               "<th>PROMEDIO PERCEPCIÓN DE TERCEROS (B)</th>" +
                                               "<th>DIFERENCIA (A-B)</th>" +
                                           "</tr>" +
                                       "</thead>" +
                                       "<tbody>");


                double SUMCoordinador = 0;
                double SUMAutoevaluacion = 0;

                double SUMCoTutor = 0;
                double SUMHeteroEvaluacion = 0;
                double porXcursoSUm = 0;
                var resultReporteEvaluacion = _objDatosReporte.reporteEvaluacionSNNA(idPeriodo);
                foreach (var item in resultReporteEvaluacion)
                {

                    var promedioCriterioAutoevalucion = item.autoevaluacion * ((double)valorAutoevaluacion / 100);
                    var promedioCriterioTutor = item.coCoordinador * ((double)valorCoTutor / 100);
                    var promedioCriterioCoordinador = item.coDirector * ((double)valorCoordinador / 100);
                    var promedioCriterioHetero = item.coHeteroevaluacion * ((double)valorHeteroEvaluacion / 100);
                    SUMAutoevaluacion += promedioCriterioAutoevalucion;
                    SUMCoTutor += promedioCriterioTutor;
                    SUMCoordinador += promedioCriterioCoordinador;
                    SUMHeteroEvaluacion += promedioCriterioHetero;

                    porXcursoSUm += SUMAutoevaluacion + SUMCoTutor + SUMCoordinador + SUMHeteroEvaluacion;

                    var resultPromedioTerceros = ((promedioCriterioTutor + promedioCriterioCoordinador + promedioCriterioHetero) / (100 - valorAutoevaluacion)) * 100;
                    _codeHtml.Append("<tr>" +
                                               "<td>" + item.materia + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioAutoevalucion, 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioTutor, 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioCoordinador, 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioHetero, 2) + "</td>" +
                                               "<td>" + Math.Round((promedioCriterioAutoevalucion + promedioCriterioCoordinador + promedioCriterioHetero + promedioCriterioTutor), 2) + "</td>" +
                                               "<td>" + Math.Round(promedioCriterioAutoevalucion * valorAutoevaluacion, 2) + "</td>" +
                                               "<td>" + Math.Round(resultPromedioTerceros, 2) + "</td>" +
                                               "<td>" + Math.Round(((promedioCriterioAutoevalucion * valorAutoevaluacion) - resultPromedioTerceros), 2) + "</td>" +
                                           "</tr>");

                }

                var promAutoEvaluacion = SUMAutoevaluacion / resultReporteEvaluacion.Count;
                var promCoTutor = SUMCoTutor / resultReporteEvaluacion.Count;
                var promCoDirector = SUMCoordinador / resultReporteEvaluacion.Count;
                var promHeteroEvaluacion = SUMHeteroEvaluacion / resultReporteEvaluacion.Count;
                var promPromedioXCurso = porXcursoSUm / resultReporteEvaluacion.Count;

                _codeHtml.Append("</tbody></table></div></div></div>" +
                "<div class='row'>" +
                     "<div class='col-lg-9'>" +
                        "<div class='table-responsive'>" +
                            "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                "<tbody>" +
                                    "<tr>" +
                                        "<td>CALIFICACIÓN ESPERADA (C)</td><td>" + valorAutoevaluacion + "</td><td>" + valorCoTutor + "</td><td>" + valorCoordinador + "</td><td>" + valorHeteroEvaluacion + "</td><td>100</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>PROMEDIO (D)</td>" +
                                        "<td>" + Math.Round(promAutoEvaluacion, 2) + "</td>" +
                                        "<td>" + Math.Round(promCoTutor, 2) + "</td>" +
                                        "<td>" + Math.Round(promCoDirector, 2) + "</td>" +
                                        "<td>" + Math.Round(promHeteroEvaluacion, 2) + "</td>" +
                                        "<td>" + Math.Round(promPromedioXCurso, 2) + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>DIFERENCIA (C-D)</td>" +
                                       "<td>" + Math.Round((valorAutoevaluacion - promAutoEvaluacion), 2) + "</td>" +
                                        "<td>" + Math.Round((valorCoTutor - promCoTutor), 2) + "</td>" +
                                        "<td>" + Math.Round((valorCoordinador - promCoDirector), 2) + "</td>" +
                                        "<td>" + Math.Round((valorHeteroEvaluacion - promHeteroEvaluacion), 2) + "</td>" +
                                        "<td>" + Math.Round((100 - promPromedioXCurso), 2) + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>DIFERENCIA PORCENTUAL</td>" +
                                         "<td>" + Math.Round((valorAutoevaluacion - promAutoEvaluacion) / valorAutoevaluacion, 2) + "</td>" +
                                        "<td>" + Math.Round((valorCoTutor - promCoTutor) / valorCoTutor, 2) + "</td>" +
                                        "<td>" + Math.Round((valorCoordinador - promCoDirector) / valorCoordinador, 2) + "</td>" +
                                        "<td>" + Math.Round((valorHeteroEvaluacion - promHeteroEvaluacion) / valorHeteroEvaluacion, 2) + "</td>" +
                                        "<td>" + Math.Round((100 - promPromedioXCurso) / 100, 2) + "</td>" +
                                    "</tr>" +
                                "</tbody>" +
                            "</table>" +
                        "</div>" +
                    "</div>" +
                     "<div class='col-lg-3'>" +
                        "<div class='table-responsive'>" +
                            "<table class='table table-bordered table-striped table-hover text-center small'>" +
                                "<tbody>" +
                                    "<tr>" +
                                        "<td>PROMEDIO SSNA</td>" +
                                        "<td>" + promPromedioXCurso + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>PROMEDIO ALTO:</td>" +
                                        "<td>" + resultReporteEvaluacion.Max(E => E.porCurso) + "</td>" +
                                    "</tr>" +
                                    "<tr>" +
                                        "<td>PROMEDIO BAJO:</td>" +
                                        "<td>" + resultReporteEvaluacion.Min(E => E.porCurso) + "</td>" +
                                    "</tr>" +
                                "</tbody>" +
                            "</table>" +
                        "</div>" +

                    "</div>" +
                "</div>");

                return _codeHtml.ToString();
            }
            catch (Exception)
            {

                return "<h2>No tiene datos el usuario</h2>";
            }
        }



    }
}
